package com.hotelManager.www.serviceInterface;

import com.hotelManager.www.po.Order;

import java.util.List;
import java.math.BigDecimal;

/**
 * 订单服务接口
 */
public interface OrderServiceInterface extends BaseService<Order> {
    
    /**
     * 创建订单
     * @param userId 用户ID
     * @param shopId 店铺ID
     * @param roomId 房间ID
     * @param days 预订天数
     * @return 创建的订单对象
     */
    Order createOrder(int userId, int shopId, int roomId, int days);
    
    /**
     * 根据用户ID获取订单列表
     * @param userId 用户ID
     * @return 订单列表
     */
    List<Order> getOrdersByUserId(int userId);
    
    /**
     * 根据店铺ID获取订单列表
     * @param shopId 店铺ID
     * @return 订单列表
     */
    List<Order> getOrdersByShopId(int shopId);
    
    /**
     * 更新订单状态
     * @param orderId 订单ID
     * @param status 新状态
     * @param userId 用户ID
     * @return 是否更新成功
     */
    boolean updateOrderStatus(int orderId, String status, int userId);
    
    /**
     * 取消订单
     * @param userId 用户ID
     * @param orderId 订单ID
     * @return 是否取消成功
     */
    boolean cancelOrder(int userId, int orderId);
    
    /**
     * 完成订单
     * @param orderId 订单ID
     * @param userId 用户ID
     * @return 是否完成成功
     */
    boolean completeOrder(int orderId, int userId);
    
    /**
     * 获取待处理的订单列表
     * @param shopId 店铺ID
     * @return 待处理订单列表
     */
    List<Order> getPendingOrders(int shopId);
    
    /**
     * 获取已完成的订单列表
     * @param shopId 店铺ID
     * @return 已完成订单列表
     */
    List<Order> getCompletedOrders(int shopId);
    
    /**
     * 获取已取消的订单列表
     * @param userId 用户ID
     * @return 已取消订单列表
     */
    List<Order> getCancelledOrders(int userId);
    
    /**
     * 计算订单总金额
     * @param orderId 订单ID
     * @return 订单总金额
     */
    BigDecimal calculateTotalAmount(int orderId);
} 